import cv2
from PIL import ImageFont, ImageDraw, Image
import numpy as np

def drawRectBox(image, box, text, font, font_color=(0, 255, 0), thickness=2):
    """
    在图像上绘制带文字的矩形框（支持中文字符）
    :param image: OpenCV 图像（BGR格式）
    :param box: 矩形框坐标 [x1, y1, x2, y2]
    :param text: 标注文字
    :param font: 已经创建好的 FreeTypeFont 对象
    :param font_color: 字体颜色（BGR格式）
    :param thickness: 矩形框线条粗细
    """
    x1, y1, x2, y2 = box
    cv2.rectangle(image, (x1, y1), (x2, y2), font_color, thickness)  # 绘制矩形框

    # 处理中文字符（使用 PIL 渲染）
    pil_image = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
    draw = ImageDraw.Draw(pil_image)

    # 使用 textbbox 替代 textsize
    bbox = draw.textbbox((0, 0), text, font=font)
    text_width = bbox[2] - bbox[0]
    text_height = bbox[3] - bbox[1]

    draw.text((x1, y1 - text_height - 5), text, font=font, fill=(font_color[2], font_color[1], font_color[0]))  # PIL使用RGB颜色

    # 转换回 OpenCV 格式
    return cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)